package com.wll.design.观察者.service;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: Observerable.java
 * @author: wanglulu
 * @version: 1.0.0
 * @Description: 一个被观察者的类Observerable
 * @createTime: 2021/11/25 15:23
 */
public class Observerable {

    /**
     * 所有的观察者
     */
    private List<Observer> observers = new ArrayList<Observer>();

    /**
     * 通知状态 1 为通知 否则不是
     */
    private int state;

    public int getState() {
        return state;
    }

    public void setState(int state) {
        notifyAllObservers(state);
    }

    /**
     * 添加观察者
     * @param observer
     */
    public void addServer(Observer observer) {
        observers.add(observer);
    }

    /**
     * 移除观察者
     * @param observer
     */
    public void removeServer(Observer observer) {
        observers.remove(observer);
    }

    /**
     * 通知
     * @param state
     */
    public void notifyAllObservers(int state) {
        if (state != 1) {
            System.out.println("不是通知的状态");
            return;
        }
        for (Observer observer : observers) {
            observer.doEvent();
        }
    }


}
